package br.com.exemploNegocio.dao.impl;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.exemploNegocio.dao.EntidadeDAO;
import br.com.exemploNegocio.entidade.Entidade;

@Stateless
public class EntidadeDAOImpl implements EntidadeDAO {

	@PersistenceContext
	private EntityManager entityManager;

	public void inserirEntidade(Entidade entidade) {
		entityManager.persist(entidade);
	}

	public void alterarEntidade(Entidade entidade) {
		entityManager.merge(entidade);
	}

	public void excluirEntidade(Entidade entidade) {
		entityManager.remove(entityManager.getReference(Entidade.class, entidade.getId()));
	}

	public Entidade getEntidadeById(Long userId) {
		return (Entidade) entityManager.find(Entidade.class, userId);
	}

	public Entidade getEntidadeByName(String nome) {
		Query query = entityManager.createNamedQuery("findEntidadeByName",
				Entidade.class).setParameter("nome", nome);

		return (Entidade) query.getResultList().get(0);
	}

	@SuppressWarnings("unchecked")
	public List<Entidade> getEntidades() {
		Query query = entityManager.createNamedQuery("findEntidades",
				Entidade.class);
		return query.getResultList();
	}

}
